package List集合;

import java.util.ArrayList;
import java.util.List;

public class Mylist {
    public static void main(String[] args) {
        /*

        List系列集合独有的方法：
            void add(int index,E element)       在此集合中的指定位置插入指定的元素
            E remove(int index)                 删除指定索引处的元素，返回被删除的元素
            E set(int index,E element)          修改指定索引处的元素，返回被修改的元素
            E get(int index)                    返回指定索引处的元素
        */


        //1.创建一个集合
        List<String> list=new ArrayList<>();

        //2.添加元素
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");

        //void add(int index,E element)       在此集合中的指定位置插入指定的元素
        //细节：原来索引上的元素会依次往后移
        list.add(1,"QQQ");//[aaa, QQQ, bbb, ccc]




        //E remove(int index)                 删除指定索引处的元素，返回被删除的元素
        String remove = list.remove(0);
        System.out.println(remove);//aaa
        //List系列集合中的两个删除的方法
        //1.直接删除元素
        //2.通过索引进行删除
        //1.创建集合并添加元素
        List<Integer> list2 = new ArrayList<>();
        list2.add(1);
        list2.add(2);
        list2.add(3);

        //2.删除元素
        //请问：此时删除的是1这个元素，还是1索引上的元素？
        //为什么？
        //因为在调用方法的时候，如果方法出现了重载现象
        //优先调用，实参跟形参类型一致的那个方法。
        //list.remove(1);

        //手动装箱，手动把基本数据类型的1，变成Integer类型
        Integer i = 1;
        list2.remove(i);
        System.out.println(list2);

        //E set(int index,E element)          修改指定索引处的元素，返回被修改的元素
        String result = list.set(0, "ZZZ");
        System.out.println(result);

        // E get(int index)                    返回指定索引处的元素
        String s = list.get(0);
        System.out.println(s);

        //3.打印集合
        System.out.println(list);
    }
}
